package main

import "fmt"

func main() {
	/*1、常用运算符+ - * / %(取余) ++ -- += -=  */
	var a, b = 1, 2
	var strA, strB = "hello", "word" //字符串也能相加
	fmt.Println(a + b)               //结果：3
	fmt.Println(strA + strB)         //结果：helloword
	a++
	fmt.Println(a) //结果： 2

	/*2、逻辑运算符 &&  || ! */
	var Abool = true
	var Bbool = false
	if Abool && Bbool {
		fmt.Println("第一行：true")
	}
	if Abool || Bbool {
		fmt.Println("第二行：true")
	}

	if Abool && Bbool {
		fmt.Println("第三行： true")
	} else {
		fmt.Println("第四行：true")
	}
	if !(Abool && Bbool) {
		fmt.Println("第五行：true")
	}

	/*3、位运算符 &按位与 |按位或 ^按位异或 <<左移运算符  >>右移运算符   */
	decimal := 10
	binary := decimal << 2 // 左移两位
	fmt.Printf("十进制数 %b 左移两位的结果是 %b\n", decimal, binary)

	/*4、赋值运算符 =  += &=等等 */
	var m = 21
	var c int
	c = m
	fmt.Println("a是：", m)
	fmt.Println("c是：", c)
	c += a
	fmt.Println("第二行c:", c)
	c &= a
	fmt.Println("第三行c:", c)

	/*5、其他运算符 $取变量地址，*指针*/
	var k int = 4
	var l int32
	var n float32
	var ptr *int
	fmt.Printf("第 1 ⾏ - a 变量类型为 = %T\n", k)
	fmt.Printf("第 2 ⾏ - b 变量类型为 = %T\n", l)
	fmt.Printf("第 3 ⾏ - c 变量类型为 = %T\n", n)
	ptr = &a
	fmt.Printf("a 的值为	%d\n", a)
	fmt.Printf("*ptr 为 %d\n", *ptr)

}
